package teste;

import static org.junit.Assert.*;

import java.util.Date;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

import util.HibernateUtil;

import cliente.Cliente;
import cliente.ClienteRN;

public class ClienteTest extends TestHeranca{

	@After
	public void limpaBanco() {
		ClienteRN clienteRN = new ClienteRN();
		List<Cliente> listaClientes = clienteRN.listar();

		for (Cliente cliente : listaClientes) {
			clienteRN.excluir(cliente);
		}
	}

	@Before
	public void setup() {

		Cliente c1 = new Cliente("Robson", "87333676471", "aaaa@aaa",
				"Rua Alternativa", new Date(), 5000.00);
		Cliente c2 = new Cliente("Telma", "56741987487", "tttt@tttt", "Kosmo",
				new Date(), 7000.00);
		Cliente c3 = new Cliente("Vitor", "54830652209", "vvvv@vvvv", "Aurora",
				new Date(), 1.00);

		ClienteRN cliente = new ClienteRN();

		cliente.salvar(c1);
		cliente.salvar(c2);
		cliente.salvar(c3);

	}

	@Test
	public void listarTest() {
		ClienteRN clienteRN = new ClienteRN();
		List<Cliente> lista = clienteRN.listar();

		assertEquals(3, lista.size());
	}

	@Test
	public void pesquisaTest() {

		ClienteRN cliente = new ClienteRN();
		Cliente clientePesquisado = cliente.pesquisar("on");

		assertEquals("Rua Alternativa", clientePesquisado.getEndereco());
	}

	@Test
	public void excluirClienteTest() {

		ClienteRN cliente = new ClienteRN();

		List<Cliente> lista = cliente.listar();

		Cliente clienteExcluido = lista.get(0);
		cliente.excluir(clienteExcluido);

		lista = cliente.listar();
		assertEquals(2, lista.size());

	}

	@Test
	public void alteracaoClienteTest() {

		ClienteRN cliente = new ClienteRN();
		Cliente clienteAlterado = cliente.pesquisar("Robson");
		clienteAlterado.setNome("Luis");
		cliente.alterar(clienteAlterado);

		Cliente clientePesquisado = cliente.pesquisar("Luis");
		assertEquals("Luis", clientePesquisado.getNome());
	}

}
